The invention disclosed herein relates generally to performing storage operations in a computer network. More particularly, the present invention relates to performing multiple stream storage operations from one or more subclients in a computer network.
Storage of electronic data has evolved through many forms. During the early development of the computer, storage of data was limited to individual computers. Electronic data was stored in the Random Access Memory (RAM) or some other storage medium such as a hard drive or tape drive that was an actual part of the individual computer.
Later, with the advent of networked computing, storage of electronic data gradually migrated from the individual computer to stand-alone storage devices and other storage devices accessible via a network, for example a tape library accessible via a network server or other computing device. These network storage devices soon evolved in the form of networked tape drives, libraries, optical libraries, Redundant Arrays of Inexpensive Disks (RAID), CD-ROM jukeboxes, and other devices. System administrators often use network storage devices to perform storage operations and make backup copies and other copies of data stored on individual client computers in order to preserve data against accidental loss, corruption, physical damage, and other risks.
Storage systems evolved to handle increasingly complex storage operations and increasingly large volumes of data. For example, some storage management systems began organizing system components and system resources into logical groupings and hierarchies such as storage operation cells of the CommVault QiNetix storage management system, available from CommVault Systems, Inc. of Oceanport, N.J., and as further described as further described in Application Ser. No. 60/482,305 and application Ser. No. 09/354,058 which are hereby incorporated by reference in their entirety.
In addition, other systems and methods were adopted to address performance and data transfer bottlenecks and other issues. For example, the data stream between a volume on which a storage operation, such as a backup operation, was to be performed and the intended destination for the storage operation copy of the data often presented a bottleneck and could only stream a specified amount of data at any given time. To address this issue, client volumes to be backed up, such as primary volumes, were logically subdivided and organized into portions of data, for example sub-clients as used in the QiNetix storage management system or other portions of data known in the art. Sub-clients typically represent static associations of portions of data of a volume and are mutually exclusive. Thus, a portion of data is given a label and the association is stored as a static entity in an index or other storage location used by the system. Sub-clients are also used as an effective administrative scheme of organizing data according to data type, department within the enterprise, storage preferences, etc. For example, an administrator might find it preferable to separate e-mail data from financial data using two different sub-clients having different storage preferences, retention criteria, etc.
Each individual sub-client was thereby allocated an individual data stream for performing storage operation thus increasing performance of storage operations for the entire volume. For example, if a volume was divided into four sub-clients, the volume could then be allocated four streams instead of one stream representing a theoretical fourfold increase in performance.
Despite these improvements, data from a single sub-client could only be transferred by a single stream and data transfer is still fundamentally atomic at the sub-client level. In some instances, for example, in enterprise class storage management systems storing terabytes or even megabytes of data, sub-clients are often extremely large and thus dividing a volume into additional sub-clients presented little performance advantage since the amount of data in each sub-client was still enormous.